<?php
/**
 * 8、设计模式学习-代理模式
 * 天气控制器
 * 2019年12月11日08:53:37
 */
namespace Application\Controller;

use Application\Common\Proxy\WeatherProxy as WeatherProxy;

class WeatherProxyController extends BaseController
{
    // 没有使用代理模式，获取当前的 阴晴、风级
    public function noUseProxy()
    {
        echo '当前天气的信息为：获取不到。原因：Cloud 与 Wind 类假定的是远程服务端的类，如果服务端没有代理这两个类，就无法调用';
    }
    // 使用代理模式，获取当前的 阴晴、风级
    public function useProxy()
    {
        $weather = array();
        $weatehr_proxy = new WeatherProxy();
        $weather = $weatehr_proxy -> getCurrentLevel();
        echo '当前天气的信息为：';
        export($weather);
        // 总结：当一个客户端需要对应多个或者仅仅一个，就可以使用代理模式，隐藏服务端的具体细节，这样避免了过多的类分散参与
        // 其他：前后端分离后，一个前端页面需要请求多个接口获取数据，这时服务端可以使用代理模式把这些接口的数据全部获取，然后统一提供给前端调用
        // [关键]总结：如果这个数据处理中心是服务端开放的接口（或者独立于服务端与客户端）就是相对于客户端的代理模式；如果是本系统开放的就是相对于本系统的门面模式
    }
}
